﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DotNET4Study.Loan;
using DotNET4Study.同步学习;

namespace DotNET4Study
{
    class Program
    {
        static void Main(string[] args)
        {
            ////1. 研究Concurrent的使用
            //ConcurrentStudy.Excute();

            ////2.研究Parallel的使用
            //ParallelStudy.Excute();

            ////3.研究Linq之基本用法
            //LinqLamdaStudy.Execute();

            ////4.研究逆变协变
            //ConvariantContravariant.Excute();


            ////5.研究特性[System.ThreadStatic]
            //ThreadStaticStudy.Excute();

            ////6.研究thread.join()
            //ThreadJoinStudy.Excute();

            ////7.研究动态代理
            //CastleDynamicProxyStudy.Excute();

            ////8.研究ReaderWriterLockSlim
            //ReaderWriterLockSlimStudy.Excute();


            ////9.研究泛型参数的信息
            //GenericParameterInformationStudy.Execute();

            ////10.研究双引号的使用
            //DoubleQuoteStudy.Execute();

            ////11.Tupe研究
            //TupeStudy.Excute();

            ////12.Linq研究
            //LinqStudy2.Execute();

            ////13.接口多层次继承的研究
            //InterfaceInheritStudy.Execute();

            ////14.IEnumerable<T>研究
            //IEnumerableStudy.Execute();

            ////15.研究继承
            //ConvariantContravariantStudy2.Execute();

            ////16.研究IGrouping接口
            //IGroupingStudy.Execute();

            ////17.LookupStudy研究
            //LookupStudy.Execute();

            ////18.自定义节点研究
            //MySection.MySectionConsole.Execute();

            ////19.
            //Log4netStudy.Execute();

            //20.NLog使用
            //NLogStudy.Execute();


            ////21.C#中的闭包
            ////ClosureStudy.Execute();
            //var a = new ClosureStudy();
            //var b = a.T1();
            //Console.WriteLine("------------");
            //Console.WriteLine(b());

            ////22.反射使用
            //ReflectStudy.Execute();

            ////23.文件监控的使用
            //FileWatcherStudy.Execute();

            ////24.VB程序集中的财务计算
            //FinancialStudy.Exectue();

            //HilandLoanStudy.Execute();

            ////26.Json使用
            //HiJSON.Execute();

            ////27.DateTime格式研究
            //DateTimeFormatStudy.Execute();

            ////28.事件和匿名委托方法的使用
            ////a.普通方法的调用
            //FuncVSEventStudy.MyEvent += new EventHandler(FuncVSEventStudy_MyEvent);
            //FuncVSEventStudy.MyEvent += new EventHandler(FuncVSEventStudy_MyEvent2);
            ////b.单独匿名委托的调用
            //FuncVSEventStudy.MyFunc = () => { Console.WriteLine("客户端方法1"); return ""; };
            ////c.多匿名委托的调用
            //FuncVSEventStudy.MyFuncs.Add(() => { Console.WriteLine("客户端方法1"); return ""; });
            //FuncVSEventStudy.MyFuncs.Add(() => { Console.WriteLine("客户端方法2"); return ""; });
            //FuncVSEventStudy.Execute();

            ////29.ChangeType使用
            //ChangeTypeStudy.Execute();

            ////30.Type研究
            //TypeStudy.Execute();

            ////31.流操作研究
            //StreamStudy.Execute();

            ////32.RMB表示形式验证
            //RMBStudy.Execute();

            ////33.数字的进制转换研究
            //NumberBaseConvertStudy.Execute();

            ////34.XElement使用XPath研究
            //XExtensionsStudy.Execute();

            ////35.文件编码格式研究
            //FileFormatStudy.Execute();

            ////36.XNameXNamespace研究
            //XNameXNamespaceStudy.Execute();

            ////37.MemberWiseStudy
            //MemberWiseCloneStudy.Execute();

            ////38.同步研究
            //MonitorStudy.Execute();
            //JoinStudy.Execute();
            //ConcurentDictionaryStudy.Execute();

            ////39.字符串截取研究
            //StringSubStudy.Execute();

            //ConnectionPoolTest.Execute();

            //TaskExceptionStudy.Execute();

            //40.StringFormat在多行下的使用
            StringFormat在多行下的使用.Execute();

            Console.ReadLine();
        }

        static void FuncVSEventStudy_MyEvent(object sender, EventArgs e)
        {
            Console.WriteLine("客户端方法1");
        }

        static void FuncVSEventStudy_MyEvent2(object sender, EventArgs e)
        {
            Console.WriteLine("客户端方法2");
        }
    }
}
